package OfferLanQiaoBei.a_13届蓝桥真题;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/*
题目描述

给定一个长度为 n 的数列 A1 , A2 , ⋯   , An, 
和一个非负整数 x , 
给定 m 次查询, 每次询问能否从某个区间 [ l , r]中选择两个数使得他们的异或等于 x。
输入格式

输入的第一行包含三个整数 n , m , x 
第二行包含 n 个整数 A1 , A2 , ⋯   , An
接下来 m 行，每行包含两个整数 li , ri,表示询问区间 [ li , ri]

输出格式
对于每个询问, 如果该区间内存在两个数的异或为 x 则输出 yes, 否则输出 no。

4 4 1
1 2 3 4
1 4
1 2
2 3
3 3


yes
no
yes
no

 */
public class z额外_选数异或 {
	public static void main(String[] args) {
		z额外_选数异或 test = new z额外_选数异或();
		test.useDeal();
	}
	
	public void useDeal() {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int m = scanner.nextInt();
		long x = scanner.nextLong();
		int[] dp = new int[100010];
		Map<Long, Integer> hash = new HashMap<Long, Integer>();
		Arrays.fill(dp, 0);
		deal(dp, hash, N, m, x, scanner);
	}
	
	public void deal(int[] dp, Map<Long, Integer> hash, int N, int m, long x, Scanner scanner) {
		for (int i = 1; i <= N; i++) {
			long number = scanner.nextLong();
			Integer defateResult = hash.get(x ^ number);
			if (defateResult == null) {
				defateResult = 0;
			}
			dp[i] = Math.max(dp[i - 1], defateResult);
			hash.put(number, i);
		}
		while (m-- > 0) {
			int l = scanner.nextInt();
			int r = scanner.nextInt();
			if (dp[r] >= l) {
				System.out.println("yes");
			} else {
				System.out.println("no");
			}
		}
	}
}
